package jg.simkit.core.exception;

import jg.simkit.core.kit.StrKit;

import java.lang.InstantiationException;

/**
 * 异常工具类
 * @author gaolj
 */
public class ExceptionKit {

    private ExceptionKit() throws InstantiationException {
        throw wrapInstantiation("Cannot be instantiated");
    }

    /**
     * 获取异常消息，调用异常类的getMessage()方法
     * @param e 异常
     * @return 消息
     */
    public static String getMessage(Throwable e) {
        if (null == e) {
            return StrKit.NULL;
        }
        return e.getMessage();
    }

    /**
     * 包装实例化异常
     * @param message 消息
     * @return 实例化异常
     */
    public static InstantiationException wrapInstantiation(String message) {
        return new InstantiationException(message);
    }

    /**
     * 包装运行异常
     * @param message 消息
     * @return 运行异常
     */
    public static RuntimeException wrapRuntime(String message) {
        return new RuntimeException(message);
    }

    /**
     * 包装非法参数异常
     * @param message 消息
     * @return 非法参数异常
     */
    public static IllegalArgumentException wrapIllegalArgument(String message) {
        return new IllegalArgumentException(message);
    }

    /**
     * 包装验证异常
     * @param status 状态码
     * @param message 消息
     * @return 验证异常
     */
    public static ValidateException wrapValidate(int status, String message) {
        return new ValidateException(status, message);
    }

    /**
     * 包装验证异常
     * @param message 消息
     * @return 验证异常
     */
    public static ValidateException wrapValidate(String message) {
        return wrapValidate(0, message);
    }

}
